<?php

require_once(INCLUDE_PATH ."reserva/Localidade.php");
require_once(INCLUDE_PATH ."reserva/Empresa.php");
require_once(INCLUDE_PATH ."reserva/Servico.php");
require_once(INCLUDE_PATH . "cliente/ControleCliente.php");
require_once(INCLUDE_PATH . "reserva/ControladorReserva.php");

class ControleRelatorio {

        public function getDestinosMaisProcurados($datai,$dataf){
                //formata as datas para inserir no banco
                $diai = substr($datai,0,2);
                $mesi = substr($datai,3,2);
                $anoi = substr($datai,6,4);
                $diad = substr($dataf,0,2);
                $mesd = substr($dataf,3,2);
                $anod = substr($dataf,6,4);
                $datai= $anoi."-".$mesi."-".$diai;
                $dataf= $anod."-".$mesd."-".$diad;

                $sql = "SELECT destino, COUNT( destino ) AS quant FROM viagem Where dataSaida >='".$datai."'".
                       " AND dataSaida <= '".$dataf."' GROUP BY destino  ORDER BY quant DESC";
		global $myGlobals_db;
		$recordSet = $myGlobals_db->Execute($sql);
                                
                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		}
		else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$destinosArray[$i] = $f;
				$i++;
			}
		}

                foreach($destinosArray as $dest){
                  $dest->destino = ControladorReserva::buscarLocalidade($dest->destino);
                }  
		
		return $destinosArray;

	}
	
		public function getHoteisMaisProucurados($datai,$dataf){

               $datai = ControleRelatorio::converte_data($datai);
               $dataf = ControleRelatorio::converte_data($dataf);

               $sql = "SELECT DISTINCT e.nome,count(v.empresa) as quant from empresa e, viagemempresa v where dataEntrada >='".$datai."'".
                    " AND dataSaida <= '".$dataf."' AND e.codigo = v.empresa and e.tipo = 1 GROUP BY v.empresa ORDER BY quant desc";

                global $myGlobals_db;
		$recordSet = $myGlobals_db->Execute($sql);

                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		}
		else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$hoteisArray[$i] = $f;
				$i++;
			}
		}

		return $hoteisArray;
        }
        
        public function getAutoMaisProucurados($datai,$dataf){
               
               $datai = ControleRelatorio::converte_data($datai);
               $dataf = ControleRelatorio::converte_data($dataf);

               $sql = "SELECT DISTINCT e.nome,count(v.empresa) as quant from empresa e, viagemempresa v where dataEntrada >='".$datai."'".
                    " AND dataSaida <= '".$dataf."' AND e.codigo = v.empresa and e.tipo = 2 GROUP BY v.empresa ORDER BY quant desc";
                
                global $myGlobals_db;
		$recordSet = $myGlobals_db->Execute($sql);

                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		}
		else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$autosArray[$i] = $f;
				$i++;
			}
		}               

		return $autosArray;
        }

        public function converte_data($data)
        {
          if(ControleRelatorio::valida_data($data)) {
          return implode(!strstr($data, '/') ? "/" : "-", array_reverse(explode(!strstr($data, '/') ? "-" : "/", $data)));
          }
        }
        public function valida_data($data)
        {
            $data = split("[-,/]", $data);
            if(!checkdate($data[1], $data[0], $data[2]) and !checkdate($data[1], $data[2], $data[0])) {
            return false;
            }
            return true;
        }     

		public function getUsuariosCredito($datai,$dataf){
		       $datai = ControleRelatorio::converte_data($datai);
               $dataf = ControleRelatorio::converte_data($dataf);

                              
               $sql = "Select DISTINCT c.nm_cliente,SUM(v.bonus) as total from cliente c,viagem v
               		   WHERE v.dataSaida >='".$datai."'". " AND v.dataSaida <= '".$dataf."' AND c.cd_cliente=v.cliente GROUP BY c.nm_cliente ORDER BY c.nm_cliente";

                global $myGlobals_db;
				$recordSet = $myGlobals_db->Execute($sql);

                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
			}
			else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$usuariosArray[$i] = $f;
				$i++;
			}
			
			return $usuariosArray;
		}
	  }
	  
	  public function getAgenteVendas($datai,$dataf){
	  		   $datai = ControleRelatorio::converte_data($datai);
               $dataf = ControleRelatorio::converte_data($dataf);

                              
               $sql = "Select DISTINCT f.cd_funcionario,f.nm_funcionario,COUNT(v.codigo) as quant from funcionario f,viagem v
               		   WHERE v.dataSaida >='".$datai."'". " AND v.dataSaida <= '".$dataf."' AND f.cd_funcionario=v.cd_funcionario GROUP BY f.nm_funcionario ORDER BY quant DESC";

                global $myGlobals_db;
				$recordSet = $myGlobals_db->Execute($sql);

                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
			}
			else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$agentes[$i] = $f;
				$i++;
			}
			
			return $agentes;
		}
	  }
	  
	  public function getPacotesCVC($datai,$dataf){
		 $datai = ControleRelatorio::converte_data($datai);
         $dataf = ControleRelatorio::converte_data($dataf);

         $sql = "SELECT DISTINCT f.nm_funcionario,s.nome,count(e.nome) as quant from viagem vi, funcionario f, empresa e, viagemempresa v,servico s where v.dataEntrada >='".$datai."'".
                    " AND v.dataSaida <= '".$dataf."' AND f.cd_funcionario=vi.cd_funcionario AND vi.codigo=v.viagem AND e.servico=s.codigo AND e.codigo = v.empresa and e.tipo = 3 GROUP BY e.nome ORDER BY quant desc";

                global $myGlobals_db;
		 $recordSet = $myGlobals_db->Execute($sql);

                if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		}
		else {
                     if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$pacotesCVC[$i] = $f;
				$i++;
			}
		}

		return $pacotesCVC;	  	
	  }
	  
	public function getPacotesEviagens($datai,$dataf){
		 $datai = ControleRelatorio::converte_data($datai);
         $dataf = ControleRelatorio::converte_data($dataf);

         $sql = "SELECT DISTINCT f.nm_funcionario,s.nome,count(e.nome) as quant from viagem vi, funcionario f, empresa e, viagemempresa v,servico s where v.dataEntrada >='".$datai."'".
                    " AND v.dataSaida <= '".$dataf."' AND f.cd_funcionario=vi.cd_funcionario AND vi.codigo=v.viagem AND e.servico=s.codigo AND e.codigo = v.empresa and e.tipo = 4 GROUP BY e.nome ORDER BY quant desc";

         global $myGlobals_db;
		 $recordSet = $myGlobals_db->Execute($sql);

         if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		 }
		 else {
             if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$pacotesEViagens[$i] = $f;
				$i++;
			}
		 } 

		return $pacotesEViagens;	  	
	 }
	 
	public function getPassagensVendidas($datai,$dataf){
		 $datai = ControleRelatorio::converte_data($datai);
         $dataf = ControleRelatorio::converte_data($dataf);

         $sql = "SELECT DISTINCT f.nm_funcionario,s.nome as servname,e.nome as empname,count(e.nome) as quant from viagem vi, funcionario f, empresa e, viagemempresa v,servico s where v.dataEntrada >='".$datai."'".
                    " AND v.dataSaida <= '".$dataf."' AND f.cd_funcionario=vi.cd_funcionario AND vi.codigo=v.viagem AND e.servico=s.codigo AND e.codigo = v.empresa and e.tipo = 5 GROUP BY e.nome ORDER BY quant desc";

         global $myGlobals_db;
		 $recordSet = $myGlobals_db->Execute($sql);

         if (!$recordSet) {
			throw new SistemaException($myGlobals_db->ErrorMsg());
		 }
		 else {
             if($recordSet->RecordCount() == 0){
			 	throw new SistemaException("Nenhum registro encontrado");
			 }
			 $i = 0;
			 while ($f = $recordSet->FetchNextObject(false)) {
				$passagensVendidas[$i] = $f;
				$i++;
			}
		 } 

		return $passagensVendidas;	  	
	 }
	  
	  
	

}
?>
